ibis-framework を試してみた
Ibis-framework を 2022/10/15 のPyCon JP 2022 基調講演で聞いたので、触ってみました。
ibisは「分析に便利なツール」らしい。
shimizukawa.icon ibisでデータを読み込んで、joinや集計をして、分析結果をJupyterに整形して出す、という使い方に合っていそう
インストール
手順 https://ibis-project.org/docs/3.2.0/#installation
pip install ibis-framework
間違えて pip install ibis してしまったが全然関係ない別物なので間違えないように...!
MySQLと繋ぐ場合
https://ibis-project.org/docs/3.2.0/backends/MySQL/#install
pip install 'ibis-framework[mysql]'
PostgreSQLと繋ぐ場合
https://ibis-project.org/docs/3.2.0/backends/PostgreSQL/#install
pip install 'ibis-framework[postgres]'
実行
参考: https://ibis-project.org/docs/3.2.0/backends/MySQL/#ibis.backends.mysql.Backend.do_connect
code:python
import ibis
ibis.options.interactive = True
conn = ibis.mysql.connect(user='root', password='mysql', database='db')
tables = conn.list_tables()
t = conn.tables('some_table')
t.group_by('genre').aggregate(count=t.count()).sort_by(ibis.desc('count')).limit(10)
genre count
0 NaN 9429
1 1.0 2543
2 8.0 1557
3 2.0 1435
4 18.0 1401
5 3.0 1396
6 15.0 1227
7 13.0 1157
8 21.0 1106
9 5.0 1017
shimizukawa.icon感想 2022/10/16時点
SQLAlchemyのように、テーブル定義をrefrectionで取ってきて・・みたいなことを考えなくて良いのは楽
SQLAlchemyほどSQLっぽくはないが、PandasよりはSQLっぽい
SQLAlchemyでがんばらずに、ibisでjoinや集計をして、分析結果をJupyterに整形して出す、のは楽そう
と言っても内部ではSQLAlchemyのステートメントに変換して実行しているらしい